package edu.fasta.sisinfo2.builders;

import java.util.ArrayList;
import java.util.List;

import edu.fasta.sisinfo2.juegos.EscaleraReal;
import edu.fasta.sisinfo2.juegos.Juego;
import edu.fasta.sisinfo2.poker.Carta;
import edu.fasta.sisinfo2.poker.Mano;

public class EscaleraRealBuilder implements BuilderJuegos {
	
	private BuilderJuegos builderSiguiente;
	
	public EscaleraRealBuilder(BuilderJuegos builderSiguiente) {
		this.setBuilderSiguiente(builderSiguiente);
	}
	

	
	public Juego buildJuego(Mano mano) {
		List listaDeManos = new ArrayList();
		listaDeManos = mano.combinatoria(); //le paso una mano de siete cartas y me da las combinatorias posibles
		List manoActual = new ArrayList();
		
		for(int i=0; i<listaDeManos.size(); i++){ //recorro todas las manos posibles (21)
			manoActual = (List) listaDeManos.get(i);
			
			if (this.isColor(manoActual)){ //si es color
				if ((((Carta) manoActual.get(0)).getPuntaje() == 1) && //Si son A K Q J 10
						(((Carta) manoActual.get(1)).getPuntaje() == 10) &&
						(((Carta) manoActual.get(2)).getPuntaje() == 11) &&
						(((Carta) manoActual.get(3)).getPuntaje() == 12) &&
						(((Carta) manoActual.get(4)).getPuntaje() == 13)){
								System.out.println("Se creo una ESCALERA REAL");
								return new EscaleraReal(manoActual); //entonces es Escalera Real
				}
			}
		}
		return this.getBuilderSiguiente().buildJuego(mano); 
	}

	public boolean isColor(List unaMano){
		int color = ((Carta) unaMano.get(0)).getPalo();
		for(int i=1; i < unaMano.size(); i++){
			if(color != ((Carta)unaMano.get(i)).getPalo()){
				return false;
			}
		}
		return true;
	}
	
	
	
	public BuilderJuegos getBuilderSiguiente() {
		return builderSiguiente;
	}

	public void setBuilderSiguiente(BuilderJuegos builderSiguiente) {
		this.builderSiguiente = builderSiguiente;
	}



	public Juego buildJuego(List cartas) {
		// TODO Auto-generated method stub
		return null;
	}

}
